package cn.easytogo.action.common;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import cn.easytogo.action.BaseAction;
import cn.easytogo.util.FileUtil;

public class FileAction extends BaseAction{
	private static String FILEPATH = "userfiles";
	private File file;//附件文件
	private String fileFileName;//文件名称
	private String fileContentType;	//文件类型
	/**
	 * 文件上传
	 * 在子类中,可以调用这个方法作为普通方法使用,但是必须首先将file,fileFileName,FILEPATH赋值
	 * */
	public String upload(){
		if(fileFileName!=null&&!"".equals(fileFileName)){//如果有文件上传则进行文件上传处理
			try{
				String fjmc = fileFileName;
				File wj = file;
				String fullmc = saveFile(FILEPATH,file, fjmc,true);
				fullmc = fullmc.replaceAll("\\\\", "/");
				fjmc = fullmc.substring(fullmc.lastIndexOf("/")+1);
				Map map = new HashMap();
				map.put("FILENAME", fjmc);
				map.put("FILEPATH", fullmc.substring(fullmc.indexOf(FILEPATH),fullmc.lastIndexOf("/")));
			}catch (Exception e) {
				return "error";
			}
		}
		return "success";
	}
	/**
	 * 文件保存方法
	 * @param path 文件路径
	 * @param file 要上传的文件
	 * @param fileName 文件名称
	 * @param needRename 是否需要对已经存在同名的文件进行重命名，true重命名，false覆盖已存在文件
	 * @throws IOException 
	 *  
	 * */
	public String saveFile(String path,File file,String fileName,boolean needRename) throws IOException{
		String realpath = getServletContext().getRealPath(path);
		File folder = new File(realpath);
		if(!folder.exists()){
			folder.mkdir();
		}
		fileName=FileUtil.exist(realpath,fileName,needRename);
		FileUtil.uploadFile(realpath, file, fileName);//文件保存至指定位置
		return realpath +"/"+fileName;
	}
	public File getFile() {
		return file;
	}
	public void setFile(File file) {
		this.file = file;
	}
	public String getFileFileName() {
		return fileFileName;
	}
	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}
	public String getFileContentType() {
		return fileContentType;
	}
	public void setFileContentType(String fileContentType) {
		this.fileContentType = fileContentType;
	}
	
}
